using System.Collections.Generic;
using System.IO;
using Jurassic;
using Kiwi.Node.Modules;
using Kiwi.Node.Modules.Builtin;

namespace Kiwi.Node
{
    public interface IApplication
    {
        string RootFolder { get; }
        TextWriter StdErr { get; }
        TextWriter StdOut { get; }
        ScriptEngine Engine { get; }
        IEventQueue Events { get; }

        ScriptEngine CreateScriptEngine();

        List<IModuleResolver> ModuleResolvers { get; }
        Process ProcessObject { get; }
        IModule CreateModule(ScriptSource scriptSource);
        object Resolve(string moduleName);
    }
}